How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / Cloud Native Days Tokyo 2020
1. How to Schedule
Machine Learning Workloads
Nicely In Kubernetes
Shingo Omura, Preferred Networks, Inc.
Cloud Native Days Tokyo 2020
(Day2) 09/09 15:00-15:40 - Track F
6. 2017年
Tesla P100 PCIe x 8
10GbE x 2
InfiniBand FDR x 2
Total 1024 GPUs
19.1 PFLOPS
MN-1a Server Spec
MN-3 Series
6
PFN の クラスタ
MN-1 Series MN-2 Series
2020年
MN-Core x 4
100GbE x 2
MN-3a Server Spec
Total 192 MN-Cores
4.7 PFLOPS
(21.11 GFLOPS/W)
MN-Core DirectConnect
Icon pack by Icons8 - https://icons8.com
NVIDIA GPUなどの最新技術を採用した プライベート・スーパーコンピュータ MN-2 を自社構築し、 7月に稼働
Preferred Networksの深層学習用スーパーコンピュータ MN-3がスーパーコンピュータ省電力性能ランキング Green500で世界1位を獲得
世界1位!!
2019年
Tesla V100 SXM2 x 8
100GbE x 4
MN-2a Server Spec
Total 1024 GPUs
128 PFLOPS
RoCEv2 with SR-IOV
2018年
Tesla V100 PCIe x 8
10GbE x 2
InfiniBand EDR x 2
MN-1b Server Spec
Total 1536 GPUs
57.3 PFLOPS
15. Priority Scheduling / Preemption
● たとえクラスタが混んでいても、重要なジョブは動かしたい
○ 重要でないPodを止め(Preemptし)て重要なPodを動かしたい
15Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
プリエンプト
される
(犠牲になる)
16. Priority Scheduling / Preemption
● たとえクラスタが混んでいても、重要なジョブは動かしたい
○ 重要でないPodを止め(Preemptし)て重要なPodを動かしたい
16Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
他のコンテナを
プリエンプト
して実行
17. Gang-Scheduling (a.k.a. Co-Scheduling)
● 複数のPodを一度に配置したい
○ All-Reduceの分散深層学習は全pod揃わないと計算開始できない
○ 2つの Gang を1 Podずつ配置すると容易にdeadlockしてしまうため
17Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
Job A
Job B
どちらも
サイズ6
18. Network Topology Aware Scheduling
(a.k.a. Zone Aware Scheduling)
● 分散深層学習はpod間のネットワークが早い方が学習も早い
● 特定のゾーン/どこか単一(unique)なゾーンに配置したい
○ ゾーン = Network的に近いノードの塊
例: Availability Zone, Placement Group
18
Zone A
Node-A-1 Node-A-2
Node-A-3 Node-A-4
Zone B
Node-B-1 Node-B-2
Node-B-3 Node-B-4
Zone Bがいいです
いいです
Zoneに閉じるならどこでも
19. Hardware Topology Aware Scheduling
● サーバ内のハードウェアにもトポロジがある
● うまく割り当てないとボトルネックになりうる
19Icon pack by Icons8 - https://icons8.com
NUMA NodeNUMA Node
GPU NIC
MEM CPU CPU
MEM
NIC GPU
20. Hardware Topology Aware Scheduling
● サーバ内のハードウェアにもトポロジがある
● うまく割り当てないとボトルネックになりうる
20Icon pack by Icons8 - https://icons8.com
NUMA NodeNUMA Node
GPU NIC
MEM CPU CPU
MEM
NIC GPUNVLink等のGPU間
Interconnectが
利用可能場合あり
NUMA Nodeを
超えるデータ転送は
ボトルネックになりがち
21. 使いすぎなので
Scheduleしません
Soft Quota (a.k.a. Throttling)
● Kubernetes の Quota はv1.19時点ではHard Quota
○ Hard Quota 超過したらPod作成エラーになる
● 利用上限はかけたいけどPodは投げておきたい
○ Podは作れるけどスケジュールされないようにしたい
21
まだ使ってOK
Gauge by www.mindgraphy.com from the Noun Project
Namespace A
Namespace B
23. GPU Driver Version/GPU Model pinning
● GPUモデル、メモリ量、ドライババージョン等を固定したい
23gpu by Misha Petrishchev from the Noun Project
GPUの搭載メモリ
32G 16G
GPUモデル
V100 P100
GPU Driverバージョン
CUDA 9 CUDA 10
33. 33
kube-scheduler の 動作概要
出典: そのコンテナ、もっと「賢く」置けますよ? #CNDT2019 / CloudNative Days Tokyo 2019
Special Thanks 🎉
@y_taka_23
①
Node未定Podを
キューに格納
②
1個ずつ取り
出して配置先
Nodeを決定
③
Pod毎に並行で
Nodeを登録
※ ①②③のテキストは講演者による加筆